home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _D30800BF10CD4073BE40C7BE43EBB966 < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.5 KB  |  47 lines

  1.  
  2.       #include "../CGVPMacro.csi"
  3.  
  4.  
  5.       VertAttributes { POSITION_3 PRIM_COLOR }
  6.       
  7.       MainInput { VIEWPROJ_MATRIX, uniform float4 SunDirect, CAMERA_POS, uniform float3 Tangent, uniform float3 ScaleBumpTex, uniform float4 TexGen0, uniform float4 TexGen1 }
  8.       DeclarationsScript
  9.       {
  10.         IN_C0
  11.         OUT_T0_T1_T2_T3_C0
  12.       }
  13.       PositionScript = PosCommon                 
  14.       CoreScript
  15.       {
  16.         float2 vTex;
  17.         vTex.x = dot(TexGen0, vPos);
  18.         vTex.y = dot(TexGen1, vPos);
  19.         OUT.Tex1.xy = vTex * ScaleBumpTex.xy;
  20.         OUT.Tex0.xy = vTex;
  21.         
  22.         float3 normal = IN.Color.xyz * (2).xxx - IN.Position.www;
  23.         //float3 normal;
  24.         //normal.x=0;
  25.         //normal.y=0;
  26.         //normal.z=1;
  27.         
  28.         float3 binorm = normalize(cross(Tangent, normal));
  29.         float3 tang   = cross(binorm, normal);
  30.  
  31.         // compute the 3x3 tranform from tangent space to object space
  32.         float3x3 objToTangentSpace;
  33.         objToTangentSpace[0] = tang;
  34.         objToTangentSpace[1] = binorm;
  35.         objToTangentSpace[2] = normal;
  36.  
  37.         // store normalized light vector
  38.         float3 lightVec = mul(objToTangentSpace, SunDirect.xyz);
  39.         float3 viewVec = mul(objToTangentSpace, CameraPos.xyz - vPos.xyz);
  40.         
  41.         // compute half angle vector
  42.         float3 halfAngleVector = normalize(lightVec.xyz) + normalize(viewVec);
  43.         
  44.         OUT.Tex2.xyz = lightVec;
  45.         OUT.Tex3.xyz = halfAngleVector;
  46.       }
  47.